package com.zty.netty;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

/**
 * @Author ZTY
 * @Description 服务端如何处理客户端发来的消息
 * @Date 16:28 2023-12-06
 **/

public class MyChannelHandler extends ChannelInboundHandlerAdapter {
    @Override
    public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {

        // 将消息转为一个ByteBuf
        ByteBuf byteBuf = (ByteBuf) msg;
        System.out.println("服务端已收到消息: -->"+byteBuf.toString(StandardCharsets.UTF_8));

        //  通过ctx获取channel  收到了消息后回复一句
        ctx.channel().writeAndFlush(Unpooled.copiedBuffer("hello，client".getBytes(StandardCharsets.UTF_8)));
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        // 出现异常的时候执行的动作 （打印并关闭通道）
        cause.printStackTrace();
        ctx.close();
    }
}
